package modelo.policiales;

import modelo.delictivas.OrganizacionDelictiva;
import modelo.delictivas.TesoroNacional;
import modelo.lugaresYPistas.Establecimiento;
import modelo.lugaresYPistas.Pista;

public abstract class Rango {
	
	protected String nombre ;

	protected int velocidadDeViaje;
	protected int cantidadDeArrestosNecesariosParaAscender;
	
	
	Rango(){
	}

	public int getVelocidadDeViaje(){
		return this.velocidadDeViaje;
	}
	
	public int getArrestosNecesarios(){
		return this.cantidadDeArrestosNecesariosParaAscender;
	}
	
	public abstract Pista obtenerPistaCorrespondienteDeEstablecimiento(Establecimiento establecimiento);

	public abstract boolean validarAscenso(Interpol interpol ,int arrestos);

	public abstract TesoroNacional obtenerTesoroNacionalCorrespondiente(
			OrganizacionDelictiva organizacionDelictiva);
	
	public static Rango obtenerRangoSegunNombre(String nombre){
		
		if (nombre.equals("RangoNovato"))
				return RangoNovato.obtener();
		else if (nombre.equals("RangoInvestigador"))
				return RangoInvestigador.obtener();
		else if (nombre.equals("RangoDetective"))
				return RangoDetective.obtener();
		else if (nombre.equals("RangoSargento"))
				return RangoSargento.obtener();
		else	
		return null;	
	}
	
	public abstract String obtenerNombreDelRango();
	
	public abstract String getNombre();

}
